package br.ufrn.engcomp.comum.web;

import java.io.Serializable;
import java.util.Date;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import br.ufrn.engcomp.arq.exceptions.DAOException;
import br.ufrn.engcomp.arq.web.AbstractController;
import br.ufrn.engcomp.cadastro.web.FuncionarioMBean;
import br.ufrn.engcomp.comum.dominio.Usuario;
import br.ufrn.engcomp.comum.negocio.ProcessadorUsuario;


/**
 *
 *@author claudio
 *
 */

@ManagedBean
@SessionScoped
public class UsuarioMBean extends AbstractController<Usuario> implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private Usuario filtroUsuario;
	private boolean filtroLogin;
	private boolean filtroAll;
	
	private FuncionarioMBean funcionario;
	private PermissaoMBean permissao;
	
	public UsuarioMBean() { 
		super(); 
	} 
	
	@Override 
	protected void initializeEntity() { 
		setEntidade(new Usuario());
		
		filtroUsuario = new Usuario();
		
		funcionario = new FuncionarioMBean();
		permissao = new PermissaoMBean();
		
		funcionario.list();
		permissao.list();


	} 

	public FuncionarioMBean getFuncionario() {
		return funcionario;
	}

	public void setFuncionario(FuncionarioMBean funcionario) {
		this.funcionario = funcionario;
	}

	public PermissaoMBean getPermissao() {
		return permissao;
	}

	public void setPermissao(PermissaoMBean permissao) {
		this.permissao = permissao;
	}
	
	public Usuario getFiltroUsuario() {
		return filtroUsuario;
	}

	public void setFiltroUsuario(Usuario filtroUsuario) {
		this.filtroUsuario = filtroUsuario;
	}

	public boolean isFiltroLogin() {
		return filtroLogin;
	}

	public void setFiltroLogin(boolean filtroLogin) {
		this.filtroLogin = filtroLogin;
	}

	public boolean isFiltroAll() {
		return filtroAll;
	}

	public void setFiltroAll(boolean filtroAll) {
		this.filtroAll = filtroAll;
	}

	@Override
	public void saveOrUpdate() {
		getEntidade().setDataCadastro(new Date());
		getEntidade().setAtivo(true);
		super.saveOrUpdate();
		forward("/sucesso.xhtml");
	}
	
	public void forwardCadastro() {
		forward("/usuario/formUsuario.xhtml");
	}
	
	public void forwardLista() {
		list();
		forward("/usuario/listaUsuario.xhtml");
	}
	
	public void actionVoltar() {
		forward("/menuPrincipal.xhtml");
	}
	
	public void actionCancelar() {
		initializeEntity();
		forward("/menuPrincipal.xhtml");
	}
	
	public void actionAlterar() {
		forward("/usuario/formUsuario.xhtml");
	}
	
	public void actionDeletar() {
		delete();
	}
	
	public void actionRemover() {
		delete();
		forward("/usuario/listaUsuario.xhtml");
	}
	
	public void actionBuscar() {
	
		ProcessadorUsuario proc = new ProcessadorUsuario();
		
		if (filtroAll) {
			list();
		} else if (filtroLogin) {
			
			String query = "select object(a) from comum.usuario as a where ( a.login= '" + filtroUsuario.getLogin() + "')";
			
			try {
				setListEntidade(proc.findBySQL(query));
			} catch (DAOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			
		}
		
		
		forward("/usuario/listaUsuario.xhtml");
	}
	
}
